//输出所有和为S的连续正数序列。序列内按照从小至大的顺序，序列间按照开始数字从小到大的顺序
vector<vector<int>> FindContinuousSeq(int sum){
    int l=1;int r=1;int sumx=1;//用sumx来逼近、判断sum，从1开始
    vector<vector<int>> ans;
    while (l<=r) {//循环出口
        r++;
        sumx+=r;
        while(sumx>sum){
            sumx-=l;
            l++;   //若sumx超了，从左边减去l；同时l++保证了r到达sum时的出口
        }
        if (sumx==sum&&l!=r) {
            vector<int> tmp;
            for (int i=l; i<=r; i++) {
                tmp.push_back(i);//发现答案时存入tmp
            }
                ans.push_back(tmp);
        }
    }
    return ans;
}
int main(int argc, const char * argv[]) {
    // insert code here...
    vector<vector<int>> t=FindContinuousSeq(100);  //复习一下二维vector怎么输出
    for (int i=0; i<t.size(); i++) {
        vector<int> tmp=t[i];
        for (int i=0; i<tmp.size(); i++) {
            cout<<tmp[i]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

